创建共享目录
每个节点安装sshfs
yum install -y epel-release
yum -y install fuse-sshfs
选定一个备份目录做共享目录
例如我有ns0(10.1.1.0)、ns1(10.1.1.1)、ns2(10.1.1.2,主节点)三个节点,我选择ns2下的/home/dev/esbk目录做备份
# ns2下创建
mkdir /home/dev/esbk
chmod -R 777 esbk
其他所有节点挂载目录
# ns0、ns1下操作
sshfs root@10.1.1.2:/home/dev/esbk /home/dev/esbk -o allow_other
# 在ns0、ns1测试运行es的用户(我的为dev)是否有对共享目录的写的权限
sudo -u dev touch /home/dev/esbk/test
# 在ns2上/home/dev/esbk查看有没有成功创建test文件
# 如果要删除共享目录需要卸载挂载目录
fusermount -u filename
修改所有节点的elasticsearch.yml文件
vim es目录/config/elasticsearch.yml
# 添加path.repo配置共享仓库的位置
path.repo: ["/home/dev/esbk"]
# 保存后重启es
创建了共享目录后在共享目录下为集群创建共享仓库
PUT http://10.1.1.2:9200/_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/home/elk/es_backup",
"compress": true, // 是否压缩,可选
"max_snapshot_bytes_per_sec" : "50mb", // 速度限制,默认为20mb,可选
"max_restore_bytes_per_sec" : "50mb"
}
}
备份索引数据
# 所有索引备份
PUT http://10.1.1.2:9200/_snapshot/my_backup/备份名
# 指定索引备份
{
"indices": "index1, index2"
}
查看备份状态
GET http://10.1.1.2:9200/_snapshot/my_backup/备份名/_status
查看备份列表
GET http://10.1.1.2:9200/_snapshot/my_backup/_all
删除备份
DELETE http://10.1.1.2:9200/_snapshot/my_backup/备份名
恢复数据
# 全部恢复
# wait_for_completion=true 为阻塞运行,可选
POST http://10.1.1.2:9200/_snapshot/my_backup/备份名/_restore?wait_for_completion=true
# 指定恢复index1索引
{
"indices": "index1",
// 如需重命名,则增加
"rename_pattern": "index1", // 需改名的原索引名
"rename_replacement": "index2" // 改名后索引名
}
查看恢复状态
GET http://10.1.1.2:9200/_recovery/
# percent字段为恢复百分比
# 如需取消一个恢复
DELETE http://10.1.1.2:9200/恢复后的索引名